home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / php / pear / Pager / Pager.php < prev    next >
PHP Script  |  2004-10-01  |  9KB  |  172 lines

  1. <?php
  2. // +-----------------------------------------------------------------------+
  3. // | Copyright (c) 2002-2003, Richard Heyes                                |
  4. // | All rights reserved.                                                  |
  5. // |                                                                       |
  6. // | Redistribution and use in source and binary forms, with or without    |
  7. // | modification, are permitted provided that the following conditions    |
  8. // | are met:                                                              |
  9. // |                                                                       |
  10. // | o Redistributions of source code must retain the above copyright      |
  11. // |   notice, this list of conditions and the following disclaimer.       |
  12. // | o Redistributions in binary form must reproduce the above copyright   |
  13. // |   notice, this list of conditions and the following disclaimer in the |
  14. // |   documentation and/or other materials provided with the distribution.|
  15. // | o The names of the authors may not be used to endorse or promote      |
  16. // |   products derived from this software without specific prior written  |
  17. // |   permission.                                                         |
  18. // |                                                                       |
  19. // | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |
  20. // | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |
  21. // | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
  22. // | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |
  23. // | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
  24. // | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |
  25. // | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
  26. // | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
  27. // | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |
  28. // | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
  29. // | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |
  30. // |                                                                       |
  31. // +-----------------------------------------------------------------------+
  32. // | Authors: Richard Heyes <richard@phpguru.org>                          |
  33. // |          Lorenzo Alberton <l.alberton at quipo.it>                    |
  34. // +-----------------------------------------------------------------------+
  35. //
  36. // $Id: Pager.php,v 1.14 2004/04/15 18:10:00 quipo Exp $
  37.  
  38. /**
  39.  * File Pager.php
  40.  *
  41.  * @package Pager
  42.  */
  43. /**
  44.  * Pager - Wrapper class for [Sliding|Jumping]-window Pager
  45.  *
  46.  * Usage examples can be found in the doc provided
  47.  *
  48.  * @author  Richard Heyes <richard@phpguru.org>,
  49.  * @author  Lorenzo Alberton <l.alberton at quipo.it>
  50.  * @version  $Id: Pager.php,v 1.14 2004/04/15 18:10:00 quipo Exp $
  51.  * @package Pager
  52.  */
  53. class Pager
  54. {
  55.     // {{{ Pager()
  56.  
  57.     /**
  58.      * Constructor
  59.      *
  60.      * -------------------------------------------------------------------------
  61.      * VALID options are (default values are set some lines before):
  62.      *  - mode       (string): "Jumping" or "Sliding"  -window - It determines
  63.      *                         pager behaviour. See the manual for more details
  64.      *  - totalItems (int):    # of items to page.
  65.      *  - perPage    (int):    # of items per page.
  66.      *  - delta      (int):    # of page #s to show before and after the current
  67.      *                         one
  68.      *  - linkClass  (string): name of CSS class used for link styling.
  69.      *  - append     (bool):   if true pageID is appended as GET value to the
  70.      *                         URL - if false it is embedded in the URL
  71.      *                         according to "fileName" specs
  72.      *  - path       (string): complete path to the page (without the page name)
  73.      *  - fileName   (string): name of the page, with a %d if append=true
  74.      *  - urlVar     (string): name of pageNumber URL var, for example "pageID"
  75.      *  - altPrev    (string): alt text to display for prev page, on prev link.
  76.      *  - altNext    (string): alt text to display for next page, on next link.
  77.      *  - altPage    (string): alt text to display before the page number.
  78.      *  - prevImg    (string): sth (it can be text such as "<< PREV" or an
  79.      *                         <img/> as well...) to display instead of "<<".
  80.      *  - nextImg    (string): same as prevImg, used for NEXT link, instead of
  81.      *                         the default value, which is ">>".
  82.      *  - separator  (string): what to use to separate numbers (can be an
  83.      *                         <img/>, a comma, an hyphen, or whatever.
  84.      *  - spacesBeforeSeparator
  85.      *               (int):    number of spaces before the separator.
  86.      *  - firstPagePre (string):
  87.      *                         string used before first page number (can be an
  88.      *                         <img/>, a "{", an empty string, or whatever.
  89.      *  - firstPageText (string):
  90.      *                         string used in place of first page number
  91.      *  - firstPagePost (string):
  92.      *                         string used after first page number (can be an
  93.      *                         <img/>, a "}", an empty string, or whatever.
  94.      *  - lastPagePre (string):
  95.      *                         similar to firstPagePre.
  96.      *  - lastPageText (string):
  97.      *                         similar to firstPageText.
  98.      *  - lastPagePost (string):
  99.      *                         similar to firstPagePost.
  100.      *  - spacesAfterSeparator
  101.      *               (int):    number of spaces after the separator.
  102.      *  - firstLinkTitle (string):
  103.      *                          string used as title in <link rel="first"> tag
  104.      *  - lastLinkTitle (string):
  105.      *                          string used as title in <link rel="last"> tag
  106.      *  - prevLinkTitle (string):
  107.      *                          string used as title in <link rel="prev"> tag
  108.      *  - nextLinkTitle (string):
  109.      *                          string used as title in <link rel="next"> tag
  110.      *  - curPageLinkClassName
  111.      *               (string): name of CSS class used for current page link.
  112.      *  - clearIfVoid(bool):   if there's only one page, don't display pager.
  113.      *  - extraVars (array):   additional URL vars to be added to the querystring
  114.      *  - itemData   (array):  array of items to page.
  115.      *  - useSessions (bool):  if true, number of items to display per page is
  116.      *                         stored in the $_SESSION[$_sessionVar] var.
  117.      *  - closeSession (bool): if true, the session is closed just after R/W.
  118.      *  - sessionVar (string): name of the session var for perPage value.
  119.      *                         A value != from default can be useful when
  120.      *                         using more than one Pager istance in the page.
  121.      *  - pearErrorMode (constant):
  122.      *                         PEAR_ERROR mode for raiseError().
  123.      *                         Default is PEAR_ERROR_RETURN.
  124.      * -------------------------------------------------------------------------
  125.      * REQUIRED options are:
  126.      *  - fileName IF append==false (default is true)
  127.      *  - itemData OR totalItems (if itemData is set, totalItems is overwritten)
  128.      * -------------------------------------------------------------------------
  129.      *
  130.      * @param mixed $options    An associative array of option names and
  131.      *                          their values.
  132.      * @access public
  133.      */
  134.     function Pager($options = array())
  135.     {
  136.         //this check evaluates to true on 5.0.0RC-dev,
  137.         //so i'm using another one, for now...
  138.         //if (version_compare(phpversion(), '5.0.0') == -1) {
  139.         if (get_class($this) == 'pager') { //php4 lowers class names
  140.             // assign factoried method to this for PHP 4
  141.             eval('$this = Pager::factory($options);');
  142.         } else { //php5 is case sensitive
  143.             $msg = 'In PHP5 you must use the "Pager::factory($params)" method'
  144.                   .' instead of "new Pager($params)"';
  145.             trigger_error($msg, E_USER_WARNING);
  146.         }
  147.     }
  148.  
  149.     // }}}
  150.     // {{{ _factory()
  151.  
  152.     /**
  153.      * Return a pager based on $mode and $options
  154.      *
  155.      * @access public
  156.      * @static
  157.      * @param  string $options Optional parameters for the storage class
  158.      * @return object Object   Storage object
  159.      */
  160.     function &factory($options = array())
  161.     {
  162.         $mode = (isset($options['mode']) ? ucfirst($options['mode']) : 'Jumping');
  163.         $classname = 'Pager_' . $mode;
  164.         $classfile = 'Pager' . DIRECTORY_SEPARATOR . $mode . '.php';
  165.         require_once $classfile;
  166.         $pager =& new $classname($options);
  167.         return $pager;
  168.     }
  169.  
  170.     // }}}
  171. }
  172. ?>